package com.mzj.saas.mservice.qiyuesuo.controller;

import com.mzj.saas.commons.ResultBean;
import com.mzj.saas.mservice.qiyuesuo.service.QiYueSuoEmployeeService;
import com.mzj.saas.mservice.qiyuesuo.service.QiYueSuoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 契约锁
 *
 * @author hp
 */
@Controller
@RequestMapping("/qiyuesuo")
public class QiYueSuoController {

    @Autowired
    private QiYueSuoService qiYueSuoService;
    @Autowired
    private QiYueSuoEmployeeService qiYueSuoEmployeeService;

    /**
     * 文件在签署过程中，若发生签署、拒绝签署、撤回、退回等事件时
     *
     * @param signature
     * @param timestamp
     * @param content
     * @return
     */
    @RequestMapping(path = "/contract", method = RequestMethod.POST)
    @ResponseBody
    public String contractCallback(String signature, String timestamp, String content) {
        return qiYueSuoService.contractCallback(signature, timestamp, content);
    }


    /**
     * 个人认证回调
     * https://open.qiyuesuo.com/document?id=2657161963078959840
     * 接收回调请求的地址接口需要支持Content-Type: application/x-www-form-urlencoded 的post请求，
     * 每次回调不通会重复调用一次，如果调用不通，1分钟后再调用2次，一共调用4次。
     *
     * @param mode     认证模式：IVS：手机三要素认证、FACE：人脸认证、BANK：银行卡认证、MANUAL：人工审核
     * @param status   1:认证通过，2：认证不通过
     * @param authId   认证请求ID
     * @param response
     * @return
     */
    @RequestMapping(path = "/auth/personal", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> personalCallback(String mode, String status, String authId, HttpServletResponse response) {
        return qiYueSuoService.personalCallback(mode, status, authId);
    }


    /**
     * 企业认证回调
     * https://open.qiyuesuo.com/document?id=2657162391350952859
     * 接收回调请求的地址接口需要支持Content-Type: application/x-www-form-urlencoded 的post请求，
     * 每次回调不通会重复调用一次，如果调用不通，1分钟后再调用2次，一共调用4次。
     *
     * @param status      认证结果状态：0（“认证中”）、1（“认证成功”）、2（“认证失败”）
     * @param actionEvent 认证行为状态：0（“提交基本信息”）、1（“基本信息审核通过”）、2（“基础信息审核失败”）、4（“授权书审核失败”）、7（“认证成功”）
     * @param requestId   认证请求Id
     * @param authInfo    认证详情内容参考CorpAuthDetail
     * @return
     */
    @RequestMapping(path = "/auth/company", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> companyCallback(int status, String requestId, String authInfo, Integer actionEvent, HttpServletResponse response) {
        return qiYueSuoService.companyCallback(status, requestId, authInfo, actionEvent);
    }

    /**
     * 验证并添加用户
     *
     * @param accessToken
     * @param tenantName
     * @param mobile
     * @param userName
     * @return
     * @author shun
     * @date 2021年6月22日
     */
    @PostMapping("/user")
    @ResponseBody
    public ResultBean<Object> accountWithdrawal(@RequestHeader String accessToken,
                                                @RequestParam String tenantName, @RequestParam String mobile, @RequestParam String userName) {
        qiYueSuoEmployeeService.validateAddEmployeeExists(tenantName, mobile, userName);
        //qiYueSuoEmployeeService.deleteEmployee(tenantName, mobile);
        return ResultBean.successfulResult(null);
    }
}
